package it.polimi.authentication.ejb.usermanagement;

import it.polimi.authentication.ejb.usermanagement.dto.MezzoDTO;

import java.io.Serializable;
import java.math.BigDecimal;

import javax.persistence.*;

import java.sql.Time;
import java.util.Date;

/**
 * The persistent class for the mezzo_di_trasporto database table.
 * 
 */
@Entity
@Table(name="mezzo_di_trasporto")
@NamedQueries({
	@NamedQuery(name="Mezzo.findAll", query="SELECT m FROM MezzoDiTrasporto m WHERE m.Disponibile = true"),
	@NamedQuery(name="MezzoDiTrasporto.findAll", query="SELECT m FROM MezzoDiTrasporto m WHERE m.Disponibile = true"),
	@NamedQuery(name="Mezzo.findMezzo", query="SELECT m FROM MezzoDiTrasporto m WHERE m.luogopartenza= :cityP"+" AND m.luogoarrivo= :cityA " +"and m.Disponibile = true"),
	@NamedQuery(name="Mezzo.findPrezzo", query="SELECT m.prezzo FROM MezzoDiTrasporto m WHERE m.mezzo= :idMezzo"),
	@NamedQuery(name="Mezzo.findOraPartenza", query="SELECT m.orapartenza FROM MezzoDiTrasporto m WHERE m.mezzo= :idMezzo"),
	@NamedQuery(name="Mezzo.findMezzoById", query="SELECT m FROM MezzoDiTrasporto m WHERE m.mezzo= :idMezzo"),
	@NamedQuery(name="Mezzo.findCittaPartenza", query="SELECT m.luogopartenza FROM MezzoDiTrasporto m WHERE m.mezzo= :idMezzo"),
	@NamedQuery(name="Mezzo.findOraArrivo", query="SELECT m.oraarrivo FROM MezzoDiTrasporto m WHERE m.mezzo= :idMezzo"),
	//@NamedQuery(name="Mezzo.findMezzoPacc", query="SELECT m FROM MezzoDiTrasporto m, Pacchetto p, PacchettoMezzo pm WHERE pm.mezzo =m.mezzo AND pm.id = p.id AND p.email= :email  AND m.luogoarrivo = :luogo")
		

})

public class MezzoDiTrasporto implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	private int mezzo;

	private String luogoarrivo;

	private String luogopartenza;

	private Time oraarrivo;

	private Time orapartenza;

	private String tipo;
	
    private Boolean Disponibile;
    
    private BigDecimal prezzo;
    
  

//	//bi-directional many-to-one association to PacchettoMezzo
//	@OneToMany(mappedBy="mezzoDiTrasporto")
//	private List<PacchettoMezzo> pacchettoMezzos;

	public MezzoDiTrasporto() {
	}
	
	public MezzoDiTrasporto(MezzoDTO mezzo){
		super();
		this.luogoarrivo=mezzo.getLuogoArrivo();
		this.luogopartenza=mezzo.getLuogoPartenza();
		this.oraarrivo=mezzo.getOraArrivo();
		this.orapartenza=mezzo.getOraPartenza();
		this.tipo=mezzo.getTipo();
		this.prezzo = mezzo.getPrezzo();
	}
	
	public Boolean getDisponibile() {
		return Disponibile;
	}

	public void setDisponibile(Boolean disponibile) {
		Disponibile = disponibile;
	}

	public BigDecimal getPrezzo() {
		return prezzo;
	}

	public void setPrezzo(BigDecimal prezzo) {
		this.prezzo = prezzo;
	}

	public int getMezzo() {
		return this.mezzo;
	}

	public void setMezzo(int mezzo) {
		this.mezzo = mezzo;
	}

	public String getLuogoarrivo() {
		return this.luogoarrivo;
	}

	public void setLuogoarrivo(String luogoarrivo) {
		this.luogoarrivo = luogoarrivo;
	}

	public String getLuogopartenza() {
		return this.luogopartenza;
	}

	public void setLuogopartenza(String luogopartenza) {
		this.luogopartenza = luogopartenza;
	}

	public Time getOraarrivo() {
		return this.oraarrivo;
	}

	public void setOraarrivo(Time oraarrivo) {
		this.oraarrivo = oraarrivo;
	}

	public Time getOrapartenza() {
		return this.orapartenza;
	}

	public void setOrapartenza(Time orapartenza) {
		this.orapartenza = orapartenza;
	}

	public String getTipo() {
		return this.tipo;
	}

	public void setTipo(String tipo) {
		this.tipo = tipo;
	}

//	public List<PacchettoMezzo> getPacchettoMezzos() {
//		return this.pacchettoMezzos;
//	}
//
//	public void setPacchettoMezzos(List<PacchettoMezzo> pacchettoMezzos) {
//		this.pacchettoMezzos = pacchettoMezzos;
//	}
//
//	public PacchettoMezzo addPacchettoMezzo(PacchettoMezzo pacchettoMezzo) {
//		getPacchettoMezzos().add(pacchettoMezzo);
//		pacchettoMezzo.setMezzoDiTrasporto(this);
//
//		return pacchettoMezzo;
//	}
//
//	public PacchettoMezzo removePacchettoMezzo(PacchettoMezzo pacchettoMezzo) {
//		getPacchettoMezzos().remove(pacchettoMezzo);
//		pacchettoMezzo.setMezzoDiTrasporto(null);
//
//		return pacchettoMezzo;
//	}

}